﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

/*  0x03F0 0000 to 0x03F0 0003  RDRAM_CONFIG_REG or RDRAM_DEVICE_TYPE_REG
    0x03F0 0004 to 0x03F0 0007  RDRAM_DEVICE_ID_REG
    0x03F0 0008 to 0x03F0 000B  RDRAM_DELAY_REG
    0x03F0 000C to 0x03F0 000F  RDRAM_MODE_REG
    0x03F0 0010 to 0x03F0 0013  RDRAM_REF_INTERVAL_REG
    0x03F0 0014 to 0x03F0 0017  RDRAM_REF_ROW_REG
    0x03F0 0018 to 0x03F0 001B  RDRAM_RAS_INTERVAL_REG
    0x03F0 001C to 0x03F0 001F  RDRAM_MIN_INTERVAL_REG
    0x03F0 0020 to 0x03F0 0023  RDRAM_ADDR_SELECT_REG
    0x03F0 0024 to 0x03F0 0027  RDRAM_DEVICE_MANUF_REG
    0x03F0 0028 to 0x03FF FFFF  Unknown*/

namespace Super64.Core.Memory.Ram.Registers
{
    [StructLayout(LayoutKind.Sequential, Pack = 4)]
    public unsafe struct RDRAMRegisters
    {
        public uint Config; // Includes device type
        public uint DeviceID;
        public uint Delay;
        public uint Mode;
        public uint ReferenceInterval;
        public uint ReferenceRow;
        public uint RasInterval;
        public uint MinInterval;
        public uint AddressSelect;
        public uint DeviceManufacturer;
        public fixed byte Unknown[0xFFFF];
    }
}
